lexer grammar AnalexGDL;

options {
  language = Java;
}

@header {
  package practica6;
}


@members {
     private ArrayList<RecognitionException> errors = new ArrayList<RecognitionException>();
     public ArrayList<RecognitionException> getErrors() {
        return errors;
     }
     @Override
     public void reportError (RecognitionException e) {
        String msg = getErrorMessage(e, getTokenNames());
        System.err.println(msg);
        errors.add(e);
     }
}

BLANCO: (' '|'\t'|'\r\n') {skip();};

fragment DIGITO: '0'..'9';
fragment LETRA: ('a'..'z')|('A'..'Z')|'_';

GRAPH: 'graph';
NODE: 'node';
EDGE: 'edge';
LABEL: 'label';
TITLE: 'title';
SOURCE: 'source';
TARGET: 'target';
ARROWSTYLE: 'arrowstyle';
BORDERSTYLE: 'borderstyle';
BORDER: 'dotted'|'dashed'|'solid';
ARROW: 'solid'|'line'|'none';

NUMERO: (DIGITO)+('.'(DIGITO)+)?;
IDENT: LETRA(LETRA|DIGITO)*;

LLAVE_A: '{';
LLAVE_C: '}';
DOS_PUNTOS: ':';
COMILLAS: '"';

CADENA: COMILLAS (options {greedy=false;}:.)* COMILLAS;
COMENTARIO: ('//' (options {greedy=false;}:.)* '\r\n') {skip();};